import random

from django.shortcuts import render
# 公共方法
# Create your views here.
from django.views import View
import json
from django.http import JsonResponse
from django_redis import get_redis_connection
from application.common.models import SendSMS
from application.common.models import Verification


# 发送短信验证码
class GetSendMsg(View):

    def get(self, response, mobile):
        """
            img_code : reids 库
            image_code: 输入验证码
            redis_img_code: 图片验证码
            uuid : 图片识别号  唯一识别码
            从redis中获取数据 进行匹配
        """
        print(mobile)
        # 获取输入的图片验证码信息
        res_img_code = response.GET.get('image_code')
        # # 链接redis
        redis_con = get_redis_connection("img_code")
        redis_img_code = redis_con.get('uuid')
        if redis_img_code is None:
            return JsonResponse({"code": 400, "errmsg": "过期了"})
        if redis_img_code != res_img_code:
            return JsonResponse({"code": 400, "errmsg": "输入验证码错误"})
        # 生成验证码 并返回状态
        code = random.randint(100000, 999999)
        redis_con.set(mobile, code, ex=180)
        # 发送验证码
        data = tuple((code, "3"))
        send_type = SendSMS(mobile, data, '1').send_message()
        if send_type:
            return JsonResponse({"code": 200, "errmsg": "success"})
        else:
            return JsonResponse({"code": 400, "errmsg": "短信配置出现异常"})





# 创建图片验证码
class CreateMsg(View):

    # 生成图片二进制数据返回 并且存入redis
    def get(self, response, uuid):
        # 使用图片直接用uuid 去获取图片 或者音频文件
        # verify_type = Verification('img', uuid).crete_verift()
        verify_type = Verification('audio', uuid).crete_verift()
        print(verify_type)
        if verify_type:
            redis_obj = get_redis_connection("img_code")
            get_code = redis_obj.get(uuid)
            if get_code:
                code_type = json.loads(get_code).get('type')
                # file_type 文件格式 .png 、.jpg 图片文件 或者 .wav 音频文件
                return JsonResponse({"code": 200, "file_type": code_type, "errmsg": "验证码生成成功"})
            else:
                return JsonResponse({"code": 400, "errmsg": "验证码已经失效！请重新生成"})
        else:
            return JsonResponse({"code": 400, "errmsg": "接口异常"})

